﻿Imports System.Data.Odbc
Imports System.Data.SqlClient
Imports System.Runtime.InteropServices
Imports System.Text
Imports System.Linq
Imports System.Collections.Generic
Imports System
Imports SDKCONTPAQNGLib
Imports System.IO


Public Class frmModulodePagos
    Dim YaTermino As Boolean
    Private CuentasCheques As New DataTable("Cuentas")
    Private CadenasAutocompletado As New AutoCompleteStringCollection
    Private mstrCondicion As String
    Private mstrValor As String

    Private minuto As Integer = 0
    Private segundo As Integer = 0
    Private milisegundo As Integer = 0

    Dim Continuar As Boolean

    Public WriteOnly Property Condicion() As String
        Set(ByVal value As String)
            mstrCondicion = value
        End Set
    End Property
    Public ReadOnly Property Valor() As String
        Get
            Valor = mstrValor
        End Get
    End Property
    Private Sub frmModulodePagos_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        CuentasCheques.PrimaryKey = Nothing
        CuentasCheques.Clear()
        CuentasCheques.Columns.Clear()

        CierraSDK()



    End Sub
    Private Sub dgResult_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgCuentas.CellDoubleClick
        Dim strRetVal As String = ""

        Try
            strRetVal = CStr(dgCuentas.Item(0, dgCuentas.CurrentCell.RowIndex).Value)
        Catch ex As Exception
            strRetVal = ""
        Finally
            mstrValor = strRetVal.Trim
        End Try

        txtCuentas.Text = strRetVal
        Panel1.Visible = False

        If dgAcumulados.Rows.Count > 0 Then
            dgDetallado.CurrentCell = dgDetallado.Rows(0).Cells(5)
            Dim Nombre As String = BuscarStrDatoContabilidad("CuentasCheques", "Nombre", "Codigo='" & txtCuentas.Text.Trim & "'")
            If Len(Nombre.Trim) > 0 Then
                lblCuenta.Text = Nombre
                Dim i As Integer
                For i = 0 To dgAcumulados.Rows.Count - 1
                    dgAcumulados.Rows(i).Cells(3).Value = txtCuentas.Text.Trim
                    dgAcumulados.Rows(i).Cells(3).Style.BackColor = Color.White
                Next
            Else
                If Len(txtCuentas.Text.Trim) > 0 Then
                    lblCuenta.Text = "Cuenta inexistente"
                    txtCuentas.Clear()
                Else
                    lblCuenta.Text = "No se ha seleccionado una cuenta"
                    For i = 0 To dgAcumulados.Rows.Count - 1
                        dgAcumulados.Rows(i).Cells(3).Value = "No indicada"
                        dgAcumulados.Rows(i).Cells(3).Style.BackColor = Color.Yellow
                    Next
                End If

            End If
        Else
            Dim Nombre As String = BuscarStrDatoContabilidad("CuentasCheques", "Nombre", "Codigo='" & txtCuentas.Text.Trim & "'")
            lblCuenta.Text = Nombre
        End If




    End Sub

    Private Sub dgResult_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles dgCuentas.KeyDown

        If e.KeyCode = Keys.Enter Then
            Dim strRetVal As String = ""

            Try
                strRetVal = CStr(dgCuentas.Item(0, dgCuentas.CurrentCell.RowIndex).Value)
            Catch ex As Exception
                strRetVal = ""
            Finally
                mstrValor = strRetVal.Trim
            End Try

            txtCuentas.Text = strRetVal
            Panel1.Visible = False

            If dgAcumulados.Rows.Count > 0 Then
                dgDetallado.CurrentCell = dgDetallado.Rows(0).Cells(5)
                Dim Nombre As String = BuscarStrDatoContabilidad("CuentasCheques", "Nombre", "Codigo='" & txtCuentas.Text.Trim & "'")
                If Len(Nombre.Trim) > 0 Then
                    lblCuenta.Text = Nombre
                    Dim i As Integer
                    For i = 0 To dgAcumulados.Rows.Count - 1
                        dgAcumulados.Rows(i).Cells(3).Value = txtCuentas.Text.Trim
                        dgAcumulados.Rows(i).Cells(3).Style.BackColor = Color.White
                    Next
                Else
                    If Len(txtCuentas.Text.Trim) > 0 Then
                        lblCuenta.Text = "Cuenta inexistente"
                        txtCuentas.Clear()
                    Else
                        lblCuenta.Text = "No se ha seleccionado una cuenta"
                        For i = 0 To dgAcumulados.Rows.Count - 1
                            dgAcumulados.Rows(i).Cells(3).Value = "No indicada"
                            dgAcumulados.Rows(i).Cells(3).Style.BackColor = Color.Yellow
                        Next
                    End If

                End If
            Else
                Dim Nombre As String = BuscarStrDatoContabilidad("CuentasCheques", "Nombre", "Codigo='" & txtCuentas.Text.Trim & "'")
                lblCuenta.Text = Nombre
            End If


        End If

    End Sub
    Sub CierraSDK()
        frmMain.statusActividad.Text = "Cerrando SDK de AdminPAQ AdminPAQ..."
        Try
            SDK_AdminPAQ.fCierraEmpresa()
            SDK_AdminPAQ.fTerminaSDK()
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Aviso")
            MsgBox("No se pudo cerrar el SDK de AdminPAQ", MsgBoxStyle.Exclamation, "Aviso")
        End Try
        frmMain.statusActividad.Text = ""

    End Sub
    Sub CargaSDK()
        'Carga Libreria
        Dim RutaDLL As String = ""
        Dim cCodigoBol As String = ""
        Dim cCodigoASE As String = ""
        frmMain.statusActividad.Text = "Cargando SDK de AdminPAQ..."
        Try

            Dim key As Microsoft.Win32.RegistryKey
            key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(gsRegPath)
            RutaDLL = CType(key.GetValue("RutaDLL"), String)
            cCodigoBol = CType(key.GetValue("cCodigoBol"), String)
            cCodigoASE = CType(key.GetValue("cCodigoASE"), String)
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Aviso")
            Exit Sub
            MsgBox("Se interrumpio el proceso", MsgBoxStyle.Exclamation, "Aviso")
        End Try

        'Carga SDK
        Dim lError As Integer

        Try
            Directory.SetCurrentDirectory(RutaDLL)
            lError = SDK_AdminPAQ.fInicializaSDK
            If lError <> 0 Then
                MensajeError(lError)
                End
            End If
        Catch ex As Exception
            MsgBox("No se pudo cargar el SDK de AdminPAQ", MsgBoxStyle.Exclamation, "Aviso")
            Exit Sub
        End Try

        'Abre Empresa de AdminPAQ
        frmMain.statusActividad.Text = "Abriendo empresa de AdminPAQ..."
        Try
            lError = SDK_AdminPAQ.fAbreEmpresa(Comercial)
            If lError <> 0 Then
                MensajeError(lError)
            End If
        Catch ex As Exception
            MsgBox("No se pudo abrir la empresa de AdminPAQ", MsgBoxStyle.Exclamation, "Aviso")
            Exit Sub
        End Try
    End Sub
    Sub CreaExcel()
        Dim xl As Object
        Dim wb As Object
        Dim i As Integer
        xl = CreateObject("Excel.Application")
        xl.Visible = True
        xl.Workbooks.Add()
        wb = xl.activeworkbook
        Dim rng As Integer
        rng = 5

        wb.SHEETS(1).cells(1, 1).value = "Imprimiendo..."
        wb.SHEETS(1).columns(1).columnwidth = 15

        wb.SHEETS(1).columns(2).columnwidth = 6
        wb.SHEETS(1).columns(3).columnwidth = 12
        wb.SHEETS(1).columns(4).columnwidth = 12
        wb.SHEETS(1).columns(5).columnwidth = 10
        wb.SHEETS(1).columns(6).columnwidth = 10
        wb.SHEETS(1).columns(7).columnwidth = 40
        wb.SHEETS(1).columns(8).columnwidth = 12
        wb.SHEETS(1).columns(9).columnwidth = 40

        'For i = 5 To 8
        'wb.SHEETS(1).columns(i).NumberFormat = "#,##0.0"
        'Next
        wb.SHEETS(1).columns(8).NumberFormat = "#,##0.00"

        wb.SHEETS(1).cells(rng, 2).value = "Pagar"
        wb.SHEETS(1).cells(rng, 3).value = "Fecha"
        wb.SHEETS(1).cells(rng, 4).value = "Vencimiento"
        wb.SHEETS(1).cells(rng, 5).value = "Folio"
        wb.SHEETS(1).cells(rng, 6).value = "Serie"
        wb.SHEETS(1).cells(rng, 7).value = "Proveedor"
        wb.SHEETS(1).cells(rng, 8).value = "Importe"
        wb.SHEETS(1).cells(rng, 9).value = "Concepto"

        For i = 2 To 9
            wb.SHEETS(1).cells(rng, i).font.bold = True
        Next
        rng = rng + 1
        For i = 0 To dgDetallado.Rows.Count - 1
            If dgDetallado.Rows(i).Cells(2).EditedFormattedValue = True Then
                wb.SHEETS(1).cells(rng, 2).value = "Si"
            Else
                wb.SHEETS(1).cells(rng, 2).value = "No"
            End If

            wb.SHEETS(1).cells(rng, 3).value = dgDetallado.Rows(i).Cells(3).Value
            wb.SHEETS(1).cells(rng, 4).value = dgDetallado.Rows(i).Cells(4).Value
            wb.SHEETS(1).cells(rng, 5).value = dgDetallado.Rows(i).Cells(5).Value
            wb.SHEETS(1).cells(rng, 6).value = dgDetallado.Rows(i).Cells(6).Value
            wb.SHEETS(1).cells(rng, 7).value = dgDetallado.Rows(i).Cells(7).Value
            wb.SHEETS(1).cells(rng, 8).value = dgDetallado.Rows(i).Cells(8).Value
            wb.SHEETS(1).cells(rng, 9).value = BuscarStrDatoCitra("SELECT CNOMBREC01 FROM MGW10006 WHERE CCODIGOC01='" & dgDetallado.Rows(i).Cells(9).Value & "'")
            rng = rng + 1
        Next

       
        wb.SHEETS(1).cells(1, 2).value = EmpresaActiva
        wb.SHEETS(1).cells(1, 2).FONT.SIZE = 20
        wb.SHEETS(1).cells(2, 2).value = "Reporte de Facturas a pagar del " & Me.datInicial.Value.ToString("d") & " al " & Me.datFinal.Value.ToString("d")
        wb.SHEETS(1).cells(2, 2).FONT.SIZE = 14
        wb.SHEETS(1).cells(3, 2).value = "Fecha de aplicación: " & datAplicacion.Value.ToString("d")
        wb.SHEETS(1).cells(3, 3).FONT.SIZE = 12

        wb.SHEETS(1).cells(1, 1).value = ""
        wb.SHEETS(1).columns(1).columnwidth = 3
        wb.sheets(1).cells(1, 1).interior.color = 15773696
        wb.sheets(1).cells(2, 1).interior.color = 15773696
    End Sub
    Private Sub frmModulodePagos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ToolStrip2.Cursor = Cursors.Hand
        ToolStrip2.RenderMode = System.Windows.Forms.ToolStripRenderMode.System
        ToolStrip2.Stretch = True

        CargaSDK()

        txtBuscarCuenta.Clear()
        txtCuentas.Clear()
        lblCuenta.Text = "No se ha seleccionado una cuenta"
        BuscaCuentas()
        Panel1.Visible = False
        CargaCuentas()

        dgAcumulados.Columns(1).ReadOnly = True
        dgAcumulados.Columns(2).ReadOnly = True
        dgAcumulados.Columns(3).ReadOnly = False


        datAplicacion.Value = Now()
        datInicial.Value = Now()
        datFinal.Value = Now()
        radioTodos.Checked = True
        dgAcumulados.Rows.Clear()
        dgDetallado.Rows.Clear()

        CargaCuentasdeCheques()
        Dim claves(0) As DataColumn
        claves(0) = CuentasCheques.Columns("Cuenta")
        'CuentasCheques.PrimaryKey = claves

        For Each Codigo In CuentasCheques.Rows
            CadenasAutocompletado.Add(Codigo("Cuenta"))
        Next

        CargaProveedores()

        lblStatus.Text = "Preparado para procesar..."
        FormateaGrid()
        txtTotal.TextAlign = HorizontalAlignment.Right
        txtTotal.Text = "0.00"
        Application.DoEvents()


        YaTermino = False
        frmMain.statusActividad.Text = "Modulo de Multipagos"

    End Sub

    Sub Enviar()
        Dim Cont As Integer = 0
        Dim i As Integer

        For i = 0 To dgAcumulados.Rows.Count - 1
            If dgAcumulados.Rows(i).Cells(2).Value > 0 Then
                If dgAcumulados.Rows(i).Cells(3).Value = "Cuenta inexistente" Then
                    Cont = Cont + 1
                ElseIf dgAcumulados.Rows(i).Cells(3).Value = "No indicada" Then
                    Cont = Cont + 1
                End If
            End If
        Next
        If Cont > 0 Then
            MsgBox("Debe de indicar la cuenta para todos los registros", MsgBoxStyle.Exclamation, "Aviso")
            Cont = 0
            Exit Sub
        End If


        Dim lSdkcheque As New TSdkCheque
        Dim lsdkEgreso As New TSdkEgreso
        Dim Referencia As String = ""
        Dim Concepto As String = ""
        Dim IdProveedor As Integer
        Dim j As Integer
        Dim lRet As Long

        Dim lSerie As String = ""
        Dim lError As Long
        Dim lFolio As Double = 0
        'Dim lCodConcepto As String = ""

        lSdkcheque.setSesion(gSdkSesion)
        lsdkEgreso.setSesion(gSdkSesion)

        Dim EsCheque As Boolean = False
        On Error GoTo error_crearDocumento

        For i = 0 To dgAcumulados.Rows.Count - 1
            'Primero Envia el cheque******************************************************************************************************************
            If CDbl(dgAcumulados.Rows(i).Cells(2).Value) > 1 Then
                If dgAcumulados.Rows(i).Cells(4).Value.ToString.Trim = "Cheque" Then
                    dgAcumulados.CurrentCell = dgAcumulados.Rows(i).Cells(2)
                    Application.DoEvents()
                    For j = 0 To dgDetallado.Rows.Count - 1
                        If IdProveedor = dgDetallado.Rows(j).Cells(0).Value Then
                            If dgDetallado.Rows(i).Cells(2).EditedFormattedValue = True Then
                                Referencia = Referencia & "," & dgDetallado.Rows(j).Cells(5).Value.ToString.Trim
                                Concepto = Concepto & "," & dgDetallado.Rows(j).Cells(6).Value.ToString.Trim
                            End If
                            
                        End If
                    Next
                    lblStatus.Text = "Enviando Cheque de " & Trim(dgAcumulados.Rows(i).Cells(1).Value.ToString.Trim) & "  a Bancos..."
                    Application.DoEvents()

                    Concepto = Concepto
                    Referencia = Mid(Referencia, 1, 20)
                    'Asigna valores a la estructura del cheque
                    lSdkcheque.iniciarInfo()
                    lSdkcheque.TipoDocumento = "49"
                    lSdkcheque.IdCuentaCheques = BuscarIntDatoContabilidad("CuentasCheques", "Id", "Codigo='" & dgAcumulados.Rows(i).Cells(3).Value.ToString.Trim & "'")
                    lSdkcheque.Folio = Trim(BuscarIntDatoContabilidad("CuentasCheques", "FolioActual", "Codigo='" & dgAcumulados.Rows(i).Cells(3).Value.ToString.Trim & "'"))
                    lSdkcheque.Fecha = datAplicacion.Value
                    lSdkcheque.FechaAplicacion = datAplicacion.Value
                    lSdkcheque.CodigoPersona = Trim(BuscarIntDatoContabilidad("Personas", "Codigo", "Nombre='" & dgAcumulados.Rows(i).Cells(1).Value.ToString.Trim & "'"))
                    lSdkcheque.BeneficiarioPagador = Trim(dgAcumulados.Rows(i).Cells(1).Value.ToString.Trim)
                    lSdkcheque.Total = dgAcumulados.Rows(i).Cells(2).Value
                    lSdkcheque.Referencia = Mid(Referencia, 2)
                    lSdkcheque.Concepto = "F-" & Mid(Concepto, 2)
                    lSdkcheque.EsProyectado = False
                    lSdkcheque.Origen = 202
                    Referencia = ""
                    Concepto = ""
                    EsCheque = True

                Else
                    dgAcumulados.CurrentCell = dgAcumulados.Rows(i).Cells(2)
                    Application.DoEvents()
                    IdProveedor = dgAcumulados.Rows(i).Cells(0).Value
                    For j = 0 To dgDetallado.Rows.Count - 1
                        If IdProveedor = dgDetallado.Rows(j).Cells(0).Value Then
                            If dgDetallado.Rows(i).Cells(2).EditedFormattedValue = True Then
                                Referencia = Referencia & "," & dgDetallado.Rows(j).Cells(5).Value.ToString.Trim
                                Concepto = Concepto & "," & dgDetallado.Rows(j).Cells(6).Value.ToString.Trim
                            End If
                        End If
                    Next
                    lblStatus.Text = "Enviando Transferencia(Egreso) de " & Trim(dgAcumulados.Rows(i).Cells(1).Value.ToString.Trim) & "  a Bancos..."
                    Application.DoEvents()
                    Referencia = Mid(Referencia, 1, 20)
                    Concepto = Concepto
                    'Asigna valores a la estructura de la transferencia
                    lsdkEgreso.iniciarInfo()

                    lsdkEgreso.TipoDocumento = "53"
                    lsdkEgreso.IdCuentaCheques = BuscarIntDatoContabilidad("CuentasCheques", "Id", "Codigo='" & dgAcumulados.Rows(i).Cells(3).Value.ToString.Trim & "'")
                    lsdkEgreso.Folio = Trim(BuscarIntDatoContabilidad("Folios", "FolioActual", "id=53"))
                    lsdkEgreso.Fecha = datAplicacion.Value
                    lsdkEgreso.FechaAplicacion = datAplicacion.Value
                    lsdkEgreso.CodigoPersona = Trim(BuscarIntDatoContabilidad("Personas", "Codigo", "Nombre='" & dgAcumulados.Rows(i).Cells(1).Value.ToString.Trim & "'"))
                    lsdkEgreso.BeneficiarioPagador = Trim(dgAcumulados.Rows(i).Cells(1).Value.ToString.Trim)
                    lsdkEgreso.Total = dgAcumulados.Rows(i).Cells(2).Value
                    lsdkEgreso.Referencia = Mid(Referencia, 2)
                    lsdkEgreso.Concepto = "F-" & Mid(Concepto, 2)
                    lsdkEgreso.EsProyectado = False
                    lsdkEgreso.Origen = 202
                    Referencia = ""
                    Concepto = ""
                    EsCheque = False
                End If

                If EsCheque = True Then
                    lRet = lSdkcheque.crea
                    If Len(lSdkcheque.getMensajeError) > 0 Then
                        Err.Raise(1000, , lSdkcheque.getMensajeError)
                    End If
                Else
                    lRet = lsdkEgreso.crea
                    If Len(lsdkEgreso.getMensajeError) > 0 Then
                        Err.Raise(1000, , lsdkEgreso.getMensajeError)
                    End If
                End If

                'If lRet = 0 Then
                'MsgBox(lRet)
                'MuestraMensajeContpaq("No se pudo guardar el movimiento", MsgBoxStyle.Exclamation, "Error")
                'Exit Sub
                'End If


                'Asociar documentos Adminpaq-Bancos
                lblStatus.Text = "Movimiento bancario guardado con éxito"
                Application.DoEvents()
                'Abona la factura y asocia documentos en AdminPAQ
                lblStatus.Text = "Enviando movimiento a AdminPAQ..."
                Application.DoEvents()
                EnviaAbono(dgAcumulados.Rows(i).Cells(2).Value, dgAcumulados.Rows(i).Cells(5).Value, i)

            End If
        Next

        MsgBox("Movimientos enviados a ContPAQ I Bancos", MsgBoxStyle.Information, "Aviso")
        lblStatus.Text = "Listo"
        Application.DoEvents()

        dgAcumulados.Rows.Clear()
        dgDetallado.Rows.Clear()

error_crearDocumento:
        muestraResultado()


    End Sub
    Private Sub muestraResultado()
        'numFila = mNumFila - 1
        'Range(mCeldaMensajeError).Offset(numFila, -1).Font.Name = "Wingdings"
        'Range(mCeldaMensajeError).Offset(numFila, -1).Font.Bold = True

        If Len(Err.Description) > 0 Then
            frmMain.statusActividad.Text = getMensajeExcepcion(Err.Description)
            'Range(mCeldaMensajeError).Offset(numFila, -1).Value = Chr(251)
            'Range(mCeldaMensajeError).Offset(numFila, -1).Font.Color = vbRed
            Err.Clear()
        Else
            frmMain.statusActividad.Text = ""
            'Range(mCeldaMensajeError).Offset(numFila, -1).Value = Chr(252)
            'Range(mCeldaMensajeError).Offset(numFila, -1).Font.Color = vbGreen
        End If

    End Sub
    Function getMensajeExcepcion(ByVal aMensaje As String) As String
        Dim res As Object
        Dim cadenaBusqueda As String
        Dim index As Integer

        cadenaBusqueda = "Excepción Manejable:"
        res = InStr(1, aMensaje, cadenaBusqueda, vbTextCompare)

        If res > 0 Then

            index = res + Len(cadenaBusqueda)

            getMensajeExcepcion = Trim$(Mid$(aMensaje, index))
            Exit Function
        End If

        getMensajeExcepcion = aMensaje

    End Function

    Sub FormateaGrid()
        dgAcumulados.Font = New System.Drawing.Font("Arial", 9.0!, System.Drawing.FontStyle.Regular)
        dgAcumulados.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
        dgAcumulados.Columns(2).DefaultCellStyle.Format = "N2"

        dgDetallado.Font = New System.Drawing.Font("Arial", 9.0!, System.Drawing.FontStyle.Regular)
        dgDetallado.Columns(3).DefaultCellStyle.Format = "dd/MM/yyyy"
        dgDetallado.Columns(4).DefaultCellStyle.Format = "dd/MM/yyyy"
        dgDetallado.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
        dgDetallado.Columns(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
        dgDetallado.Columns(8).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
        dgDetallado.Columns(8).DefaultCellStyle.Format = "N2"

        dgCuentas.Font = New System.Drawing.Font("Arial", 9.0!, System.Drawing.FontStyle.Regular)
    End Sub
    Sub CargaCuentasdeCheques()
        CuentasCheques.Columns.Add("Cuenta")

        Dim cnConn As New SqlConnection
        cnConn.ConnectionString = ContabilidadConnection
        Dim strSql As String = "SELECT Codigo,Nombre FROM CuentasCheques"
        Dim cmdBuscar As New SqlCommand

        cmdBuscar.Connection = cnConn
        cmdBuscar.CommandText = strSql
        Dim rdBuscar As SqlDataReader
        cnConn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Do While rdBuscar.Read()
            CuentasCheques.Rows.Add(rdBuscar("Codigo"))
        Loop
    End Sub
    Sub BuscaCuentas()
        Windows.Forms.Cursor.Current = Cursors.WaitCursor
        dgCuentas.Rows.Clear()

        Dim strNombre As String

        strNombre = txtBuscarCuenta.Text.Trim

        strNombre = "%" & strNombre.Replace(" ", "%") & "%"

        Dim cnconn As New SqlConnection
        cnconn.ConnectionString = ContabilidadConnection
        Dim strSql As String = ""
        cnconn.Open()
        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnconn
        Dim cmdAsignar As New SqlCommand
        cmdAsignar.Connection = cnconn

        strSql = "Select Codigo, Nombre" & _
                 " from CuentasCheques" & _
                 " Where Nombre Like '" & strNombre & "' " & mstrCondicion & " Order by Nombre "


        cmdBuscar.CommandText = strSql
        Dim rdBuscar As SqlDataReader
        rdBuscar = cmdBuscar.ExecuteReader

        Do While rdBuscar.Read()
            dgCuentas.Rows.Add(rdBuscar("Codigo").ToString.Trim, rdBuscar("Nombre").ToString.Trim)
        Loop
    End Sub

    Private Sub ControlEdicion(ByVal sender As Object, ByVal e As DataGridViewEditingControlShowingEventArgs) Handles dgAcumulados.EditingControlShowing
        If dgAcumulados.CurrentCell.ColumnIndex = 3 Then
            DirectCast(e.Control, TextBox).AutoCompleteMode = AutoCompleteMode.SuggestAppend
            DirectCast(e.Control, TextBox).AutoCompleteSource = AutoCompleteSource.CustomSource
            DirectCast(e.Control, TextBox).AutoCompleteCustomSource = CadenasAutocompletado
            'Else
            'DirectCast(e.Control, TextBox).AutoCompleteMode = Nothing
        End If
    End Sub
    ' Completar las columnas de Codigo/Precio al finalizar la edicion
    Private Sub FinDeEdicion(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) Handles dgAcumulados.CellEndEdit
        'Añadir aqui las validaciones necesarias
        Try

            If dgAcumulados.CurrentCell.ColumnIndex = 3 Then
                Dim id As Integer = BuscarIntDatoContabilidad("CuentasCheques", "Id", "Codigo='" & dgAcumulados.CurrentRow.Cells(3).Value & "'")
                If id = 0 Then
                    dgAcumulados.CurrentRow.Cells(3).Value = "Cuenta inexistente"
                    dgAcumulados.CurrentRow.Cells(3).Style.BackColor = Color.Red
                Else
                    dgAcumulados.CurrentRow.Cells(3).Style.BackColor = Color.White
                End If
            End If

        Catch ex As Exception
            '.... Accion en caso de excepcion
        End Try
    End Sub
    Sub CargaProveedores()
        lstProveedores.Items.Clear()
        Dim cnconn As New SqlConnection
        cnconn.ConnectionString = CitraConnection

        Dim strSql As String = ""
        strSql = "SELECT cRazonSo01 FROM MGW10002 WHERE cTipoCli01<>1 AND cEstatus=1 ORDER BY cRazonSo01"
        Application.DoEvents()
        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnconn
        cmdBuscar.CommandText = strSql

        Dim rdBuscar As SqlDataReader
        cnconn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Do While rdBuscar.Read()
            lstProveedores.Items.Add(rdBuscar("cRazonSo01").ToString.Trim)
        Loop
    End Sub
    Sub Todos()
        dgAcumulados.Rows.Clear()
        dgDetallado.Rows.Clear()

        chTodos.Checked = True


        Dim cnconn As New SqlConnection
        cnconn.ConnectionString = CitraConnection
        'Dim NuevaFecha1 As String = datInicial.Value.ToString("MM/dd/yyyy")
        'Dim NuevaFecha2 As String = datFinal.Value.ToString("MM/dd/yyyy")

        Dim strFecha1 As String = datInicial.Value.ToString("yyyy-dd-MM")
        Dim strFecha2 As String = datFinal.Value.AddDays(1).ToString("yyyy-dd-MM")

        strFecha1 = strFecha1 & " 00:00:00"
        strFecha2 = strFecha2 & " 00:00:00"

        Dim strSql As String = ""
        'strSql = "SELECT D.cIdDocum01,D.cFolio,D.cSerieDo01,D.cFecha,D.cIdClien01,D.cRazonSo01,D.cFechaVe01,D.cPendiente,C.cCodigoC01 AS codigoC,P.cCodigoC01 as codigoP FROM MGW10008 D INNER JOIN MGW10006 C ON D.cidconce01=c.cidconce01 INNER JOIN MGW10002 P ON D.cIdClien01=P.cIdClien01 WHERE d.cIdDocum02=19 AND d.cCancelado=0 and d.cPendiente>0 AND CONVERT(VARCHAR,d.cFechave01,101)>='" & NuevaFecha1 & "' AND CONVERT(VARCHAR,D.CFECHAVE01,101)<='" & NuevaFecha2 & "'  ORDER BY d.cIdClien01, d.cFechaVe01"
        strSql = "SELECT D.cIdDocum01,D.cFolio,D.cSerieDo01,D.cFecha,D.cIdClien01,D.cRazonSo01,D.cFechaVe01,D.cPendiente,C.cCodigoC01 AS codigoC,P.cCodigoC01 as codigoP FROM MGW10008 D INNER JOIN MGW10006 C ON D.cidconce01=c.cidconce01 INNER JOIN MGW10002 P ON D.cIdClien01=P.cIdClien01 WHERE d.cIdDocum02=19 AND d.cCancelado=0 and d.cPendiente>0 AND d.cFechave01>='" & strFecha1 & "' AND d.cFechave01<='" & strFecha2 & "'  ORDER BY d.cIdClien01, d.cFechaVe01"

        lblStatus.Text = "Buscando Registros"
        Application.DoEvents()
        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnconn
        cmdBuscar.CommandText = strSql

        Dim rdBuscar As SqlDataReader
        cnconn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Dim Primero As Boolean = True
        Dim Total As Double = 0
        Dim Proveedor As String = ""
        Dim IdProveedor As Integer = 0
        Dim Cont As Integer = 0
        Dim Cont_2 As Integer = 0
        Dim Cuenta As String
        If Len(txtCuentas.Text.Trim) > 0 Then
            Dim IdCuenta As Integer = BuscarIntDatoContabilidad("CuentasCheques", "Id", "Codigo='" & txtCuentas.Text.Trim & "'")
            If IdCuenta > 0 Then
                Cuenta = txtCuentas.Text.Trim
            Else
                Cuenta = "Cuenta Inexistente"
            End If
        Else
            Cuenta = "No indicada"
        End If

        Dim TotalGlobal As Double = 0

        Dim codigo As String

        Do While rdBuscar.Read()
            If IdProveedor <> rdBuscar("cIdClien01") Then
                If Primero = False Then

                    dgAcumulados.Rows.Add(IdProveedor, Proveedor, Total, Cuenta, "Transferencia", codigo)
                    Total = 0
                    Cont = Cont + 1
                    If Cuenta = "No indicada" Then
                        dgAcumulados.Rows(Cont - 1).Cells(3).Style.BackColor = Color.Yellow
                    ElseIf Cuenta = "Cuenta inexistente" Then
                        dgAcumulados.Rows(Cont - 1).Cells(3).Style.BackColor = Color.Red
                    End If
                    Application.DoEvents()
                End If
                Primero = False
            End If
            Cont_2 = Cont_2 + 1
            IdProveedor = rdBuscar("cIdClien01")
            Proveedor = rdBuscar("cRazonSo01").ToString.Trim
            Total = Total + rdBuscar("cPendiente")
            TotalGlobal = TotalGlobal + rdBuscar("cPendiente")
            codigo = rdBuscar("codigoP").ToString.Trim
            dgDetallado.Rows.Add(IdProveedor, rdBuscar("ciddocum01"), True, rdBuscar("cFecha"), rdBuscar("cFechaVe01"), rdBuscar("cFolio"), rdBuscar("cSerieDo01").ToString.Trim, Proveedor, rdBuscar("cPendiente"), rdBuscar("CODIGOC").ToString.Trim)
            txtTotal.Text = Format(TotalGlobal, "###,###.#0")


            lblStatus.Text = Cont_2 & " Facturas encontradas"
            Application.DoEvents()

        Loop
        Cont = Cont + 1
        dgAcumulados.Rows.Add(IdProveedor, Proveedor, Total, Cuenta, "Transferencia", codigo)
        Total = 0
        If Cuenta = "No indicada" Then
            dgAcumulados.Rows(Cont - 1).Cells(3).Style.BackColor = Color.Yellow
        ElseIf Cuenta = "Cuenta inexistente" Then
            dgAcumulados.Rows(Cont - 1).Cells(3).Style.BackColor = Color.Red
        End If
        Application.DoEvents()


        If Cont = 1 Then
            MsgBox("No se encontraron registros para procesar", MsgBoxStyle.Exclamation, "Aviso")
        Else
            MsgBox("Listo", MsgBoxStyle.Information, "Aviso")
            dgDetallado.CurrentCell = dgDetallado.Rows(0).Cells(5)
            EsNuevo = False
        End If
        YaTermino = True
        FormateaGrid()



        lblStatus.Text = "Listo"
        Application.DoEvents()
    End Sub
    Sub PorProveedor()
        dgAcumulados.Rows.Clear()
        dgDetallado.Rows.Clear()

        Dim cnconn As New SqlConnection
        cnconn.ConnectionString = CitraConnection

        Dim IdProveedor1 As Integer = BuscarIntDatoCitra("MGW10002", "cIdClien01", "cRazonSo01='" & lstProveedores.Text.Trim & "'")
        Dim NuevaFecha1 As String = datInicial.Value.ToString("MM/dd/yyyy")
        Dim NuevaFecha2 As String = datFinal.Value.ToString("MM/dd/yyyy")

        Dim strSql As String = ""
        strSql = "SELECT D.cIdDocum01,D.cFolio,D.cSerieDo01,D.cFecha,D.cIdClien01,D.cRazonSo01,D.cFechaVe01,D.cPendiente,C.cCodigoC01 as CodigoC,P.cCodigoC01 as codigoP FROM MGW10008 D INNER JOIN MGW10006 C ON D.cidconce01=c.cidconce01 INNER JOIN MGW10002 P ON D.cIdClien01=P.cIdClien01 WHERE d.cIdDocum02=19 AND d.cCancelado=0 and d.cPendiente>0 AND d.cIdClien01=" & IdProveedor1 & " AND CONVERT(VARCHAR,D.CFECHAVE01,101)>='" & NuevaFecha1 & "' AND CONVERT(VARCHAR,D.CFECHAVE01,101)<='" & NuevaFecha2 & "'  ORDER BY d.cIdClien01, d.cFechaVe01"
        'strSql = "SELECT cIdDocum01,cFolio,cFecha,cIdClien01,cRazonSo01,cSerieDo01,cFechaVe01,cTotal FROM MGW10008 WHERE cIdDocum02=19 AND cCancelado=0 and cPendiente>0 AND cIdClien01=" & IdProveedor1 & "  AND BETWEEN(cFecha, CTOD('" & NuevaFecha1 & "'), CTOD('" & NuevaFecha2 & "'))  ORDER BY cIdClien01, cFechaVe01"
        lblStatus.Text = "Buscando Registros"
        Application.DoEvents()
        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnconn
        cmdBuscar.CommandText = strSql

        Dim rdBuscar As SqlDataReader
        cnconn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Dim Primero As Boolean = True
        Dim Total As Double = 0
        Dim Proveedor As String = ""
        Dim IdProveedor As Integer = 0
        Dim Cont As Integer = 0
        Dim cont_2 As Integer = 0
        Dim Cuenta As String
        If Len(txtCuentas.Text.Trim) > 0 Then
            Dim IdCuenta As Integer = BuscarIntDatoContabilidad("CuentasCheques", "Id", "Codigo='" & txtCuentas.Text.Trim & "'")
            If IdCuenta > 0 Then
                Cuenta = txtCuentas.Text.Trim
            Else
                Cuenta = "Cuenta Inexistente"
            End If
        Else
            Cuenta = "No indicada"
        End If
        Dim TotalGlobal As Double = 0
        Dim codigo As String

        Do While rdBuscar.Read()
            If IdProveedor <> rdBuscar("cIdClien01") Then
                If Primero = False Then
                    dgAcumulados.Rows.Add(IdProveedor, Proveedor, Total, Cuenta, "Transferencia", codigo)
                    Total = 0
                    Cont = Cont + 1
                    If Cuenta = "No indicada" Then
                        dgAcumulados.Rows(Cont - 1).Cells(3).Style.BackColor = Color.Yellow
                    ElseIf Cuenta = "Cuenta inexistente" Then
                        dgAcumulados.Rows(Cont - 1).Cells(3).Style.BackColor = Color.Red
                    End If
                    Application.DoEvents()
                End If
                Primero = False
            End If
            cont_2 = cont_2 + 1
            IdProveedor = rdBuscar("cIdClien01")
            Proveedor = rdBuscar("cRazonSo01").ToString.Trim
            Total = Total + rdBuscar("cPendiente")
            TotalGlobal = TotalGlobal + rdBuscar("cPendiente")
            codigo = rdBuscar("codigoP").ToString.Trim
            dgDetallado.Rows.Add(IdProveedor, rdBuscar("ciddocum01"), True, rdBuscar("cFecha"), rdBuscar("cFechaVe01"), rdBuscar("cFolio"), rdBuscar("cSerieDo01").ToString.Trim, Proveedor, rdBuscar("cPendiente"), rdBuscar("CODIGOC").ToString.Trim)
            txtTotal.Text = Format(TotalGlobal, "###,###.#0")
            lblStatus.Text = Cont & " Facturas encontradas"
            Application.DoEvents()
        Loop
        Cont = Cont + 1
        dgAcumulados.Rows.Add(IdProveedor, Proveedor, Total, Cuenta, "Transferencia", codigo)
        Total = 0
        If Cuenta = "No indicada" Then
            dgAcumulados.Rows(Cont - 1).Cells(3).Style.BackColor = Color.Yellow
        ElseIf Cuenta = "Cuenta inexistente" Then
            dgAcumulados.Rows(Cont - 1).Cells(3).Style.BackColor = Color.Red
        End If
        Application.DoEvents()
        chTodos.Checked = True


        If Cont = 0 Then
            MsgBox("No se encontraron registros para procesar", MsgBoxStyle.Exclamation, "Aviso")
        Else
            MsgBox("Listo", MsgBoxStyle.Information, "Aviso")
            dgDetallado.CurrentCell = dgDetallado.Rows(0).Cells(3)
            EsNuevo = False
        End If
        YaTermino = True
        FormateaGrid()


        lblStatus.Text = "Listo"
        Application.DoEvents()
    End Sub

    Private Sub RadButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadButton3.Click
        Continuar = False
        ImportaTablas(2)
        Timer1.Enabled = True
        Application.DoEvents()

        Do While Continuar = False
            lblStatus.Text = "Espere mientras se actualizan las tablas..."
            Application.DoEvents()
        Loop




        If radioTodos.Checked = True Then
            Todos()
        Else
            If lstProveedores.Text = "" Then
                MsgBox("Debes indicar un proveedor", MsgBoxStyle.Exclamation, "Aviso")
                Exit Sub
            End If
            PorProveedor()
        End If


    End Sub

    Private Sub dgAcumulados_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgAcumulados.CellClick
        If dgAcumulados.CurrentCell.ColumnIndex = 1 Then
            Dim I As Integer
            Dim IdProveedor As Integer = dgAcumulados.CurrentRow.Cells(0).Value

            For I = 0 To dgDetallado.Rows.Count - 1
                If IdProveedor = dgDetallado.Rows(I).Cells(0).Value Then
                    dgDetallado.CurrentCell = dgDetallado.Rows(I).Cells(2)
                    Exit For
                End If
            Next

            For I = 0 To dgDetallado.Rows.Count - 1
                If IdProveedor = dgDetallado.Rows(I).Cells(0).Value Then
                    dgDetallado.Rows(I).Selected = True
                    'dgDetalle.CurrentCell = dgDetalle.Rows(I).Cells(2)
                Else
                    dgDetallado.Rows(I).Selected = False
                End If
            Next
        End If

    End Sub


    Private Sub dgAcumulados_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgAcumulados.CellContentClick

    End Sub

    Private Sub dgDetallado_CellToolTipTextNeeded(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellToolTipTextNeededEventArgs) Handles dgDetallado.CellToolTipTextNeeded

    End Sub

    Sub dgDetalle_CurrentCellDirtyStateChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles dgDetallado.CurrentCellDirtyStateChanged
        If dgDetallado.CurrentCell.ColumnIndex = 2 Then
            If dgDetallado.IsCurrentCellDirty Then
                dgDetallado.CommitEdit(DataGridViewDataErrorContexts.Commit)
            End If
        End If
    End Sub

    Private Sub dgDetalle_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgDetallado.CellValueChanged

        If EsNuevo = False Then
            If dgDetallado.CurrentCell.ColumnIndex = 2 Then
                dgDetallado.EndEdit()
                '-----
                Dim Proveedor As Integer = dgDetallado.CurrentRow.Cells(0).Value
                Dim i As Integer
                Dim Monto As Double = dgDetallado.CurrentRow.Cells(8).Value
                Dim Original As Double = 0

                If dgDetallado.CurrentRow.Cells(2).EditedFormattedValue = True Then

                    txtTotal.Text = Format(txtTotal.Text + Monto, "###,###.#0")
                    For i = 0 To dgAcumulados.Rows.Count - 1
                        If Proveedor = dgAcumulados.Rows(i).Cells(0).Value Then
                            Original = dgAcumulados.Rows(i).Cells(2).Value
                            dgAcumulados.Rows(i).Cells(2).Value = Original + Monto
                            dgAcumulados.Rows(i).Selected = True
                            dgAcumulados.CurrentCell = dgAcumulados.Rows(i).Cells(1)
                            Exit For

                        Else
                            dgAcumulados.Rows(i).Selected = False
                        End If
                    Next
                Else
                    txtTotal.Text = Format(txtTotal.Text - Monto, "###,###.#0")
                    For i = 0 To dgAcumulados.Rows.Count - 1
                        If Proveedor = dgAcumulados.Rows(i).Cells(0).Value Then
                            Original = dgAcumulados.Rows(i).Cells(2).Value
                            dgAcumulados.Rows(i).Cells(2).Value = Original - Monto
                            dgAcumulados.Rows(i).Selected = True
                            dgAcumulados.CurrentCell = dgAcumulados.Rows(i).Cells(1)
                            Exit For
                        Else
                            dgAcumulados.Rows(i).Selected = False
                        End If
                    Next
                End If
                Monto = 0
            End If
        End If

    End Sub

    Private Sub radioTodos_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles radioTodos.CheckedChanged
        If radioTodos.Checked = True Then
            lstProveedores.Enabled = False
        Else
            lstProveedores.Enabled = True

        End If
    End Sub

    Private Sub radioProveedor_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles radioProveedor.CheckedChanged
        If radioProveedor.Checked = True Then
            lstProveedores.Enabled = True
        Else
            lstProveedores.Enabled = False
        End If
    End Sub

    Private Sub ToolStripButton4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)



        Close()

    End Sub

    Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Private Sub Label2_Click(sender As System.Object, e As System.EventArgs) Handles Label2.Click

    End Sub

    Private Sub txtBuscarCuenta_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtBuscarCuenta.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(27) Then
            Panel1.Visible = False
            Dim Nombre As String = BuscarStrDatoContabilidad("CuentasCheques", "Nombre", "Codigo='" & txtCuentas.Text.Trim & "'")
            If Len(Nombre.Trim) > 0 Then
                lblCuenta.Text = Nombre
            Else
                If Len(txtCuentas.Text.Trim) > 0 Then
                    lblCuenta.Text = "Cuenta inexistente"
                    txtCuentas.Clear()
                Else
                    lblCuenta.Text = "No se ha seleccionado una cuenta"
                End If

            End If
        End If
    End Sub

    Private Sub txtBuscarCuenta_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtBuscarCuenta.TextChanged
        BuscaCuentas()
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Panel1.Visible = True

    End Sub

    Private Sub Panel1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint

    End Sub

    Private Sub dgCuentas_CellContentClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgCuentas.CellContentClick

    End Sub

    Private Sub dgCuentas_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles dgCuentas.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(27) Then
            Panel1.Visible = False
            Dim Nombre As String = BuscarStrDatoContabilidad("CuentasCheques", "Nombre", "Codigo='" & txtCuentas.Text.Trim & "'")
            If Len(Nombre.Trim) > 0 Then
                lblCuenta.Text = Nombre
            Else
                If Len(txtCuentas.Text.Trim) > 0 Then
                    lblCuenta.Text = "Cuenta inexistente"
                    txtCuentas.Clear()
                Else
                    lblCuenta.Text = "No se ha seleccionado una cuenta"
                End If

            End If
        End If
    End Sub

    Private Sub Button1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles Button1.KeyPress
        If e.KeyChar = Microsoft.VisualBasic.ChrW(27) Then
            Panel1.Visible = False
            Dim Nombre As String = BuscarStrDatoContabilidad("CuentasCheques", "Nombre", "Codigo='" & txtCuentas.Text.Trim & "'")
            If Len(Nombre.Trim) > 0 Then
                lblCuenta.Text = Nombre
            Else
                If Len(txtCuentas.Text.Trim) > 0 Then
                    lblCuenta.Text = "Cuenta inexistente"
                    txtCuentas.Clear()
                Else
                    lblCuenta.Text = "No se ha seleccionado una cuenta"
                End If

            End If
        End If
    End Sub
    
    Sub CargaCuentas()
        Dim cnconn As New SqlConnection
        cnconn.ConnectionString = ContabilidadConnection

        Dim strSql As String = "SELECT Codigo,Nombre FROM CuentasCheques"


        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnconn
        cmdBuscar.CommandText = strSql

        Dim rdBuscar As SqlDataReader
        cnconn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Do While rdBuscar.Read()
            txtCuentas.AutoCompleteCustomSource.Add(rdBuscar("Codigo").ToString.Trim)

        Loop
    End Sub

    Private Sub txtCuentas_Leave(sender As Object, e As System.EventArgs) Handles txtCuentas.Leave
        Dim i As Integer
        Dim Nombre As String = BuscarStrDatoContabilidad("CuentasCheques", "Nombre", "Codigo='" & txtCuentas.Text.Trim & "'")
        If Len(Nombre.Trim) > 0 Then
            lblCuenta.Text = Nombre

            For i = 0 To dgAcumulados.Rows.Count - 1
                dgAcumulados.Rows(i).Cells(3).Value = txtCuentas.Text.Trim
                dgAcumulados.Rows(i).Cells(3).Style.BackColor = Color.White
            Next
        Else
            If Len(txtCuentas.Text.Trim) > 0 Then
                lblCuenta.Text = "Cuenta inexistente"
                txtCuentas.Clear()
            Else
                lblCuenta.Text = "No se ha seleccionado una cuenta"
            End If
            For i = 0 To dgAcumulados.Rows.Count - 1
                dgAcumulados.Rows(i).Cells(3).Value = "No indicada"
                dgAcumulados.Rows(i).Cells(3).Style.BackColor = Color.Yellow
            Next
           
        End If
    End Sub

    Private Sub txtCuentas_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtCuentas.TextChanged

    End Sub

    Private Sub EnviarAContPAQINominasToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs)


    End Sub

   
    Private Sub EnviarAAdminPAQToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs)

    End Sub

    Private Sub ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub
    Private Sub Afecta(ByVal LlaveDocto As SDK_AdminPAQ.tLlaveDocto)
        Dim lError As Integer

        lError = SDK_AdminPAQ.fAfectaDocto(LlaveDocto, True)

        If lError <> 0 Then
            MensajeError(lError)
        Else
            MuestraMensaje("Documento afectado (1).", MsgBoxStyle.OkOnly, "Confirmación")
        End If
    End Sub

    Private Sub ToolStripDropDownButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        'Enviar()
    End Sub
    Sub EnviaAbono(ByVal Importe As Double, ByVal CodigoProveedor As String, ByVal FilaActual As Integer)
        'pRUEBA
        Dim Documento As SDK_AdminPAQ.tDocumento
        Dim Llave As SDK_AdminPAQ.tLlaveDocto
        Dim lAux As String
        Dim encoder As New System.Text.UTF8Encoding


        Dim lFolio As Double = 0 '3
        Dim lCodConcepto As String = BuscarStrDatoCitra("MGW10006", "cCodigoC01", "cNombreC01='Cheque emitido'")
        Dim lSerie As String = ""
        Dim lSerie2 As String = ""
        Dim lError As Long
        Dim fecha As Date = datAplicacion.Value
        Dim lFecha As String = ""
        Dim lret As Long
        Dim lFecha2 As String = ""
        Dim lFolio2 As String
        Dim CodConcepto As String = lCodConcepto
        Dim SerieStr As String
        Dim Foliodbl As Double


        'Ahora Envia el documento de Pago

        lError = SDK_AdminPAQ.fSiguienteFolio(lCodConcepto, lSerie, lFolio)
        If lError <> 0 Then
            MensajeError(lError)
            Exit Sub
        End If

        SerieStr = lSerie
        Foliodbl = CDbl(lFolio)

        lFolio2 = lFolio
        lSerie2 = lSerie
        lFecha = Format(fecha.Month, "00") & "/"
        lFecha = lFecha & Format(fecha.Day, "00") & "/"
        lFecha = lFecha & Format(fecha.Year, "0000")
        lFecha2 = lFecha

        ' Inicializa los campos Byte de la estructura de Documentos  
        Documento.aFolio = lFolio
        Documento.aNumMoneda = 1
        Documento.aTipoCambio = 1
        Documento.aImporte = Importe
        Documento.aDescuentoDoc1 = 0
        Documento.aDescuentoDoc2 = 0
        Documento.aSistemaOrigen = 55

        lAux = f_RellenaConBlancos(lCodConcepto, SDK_AdminPAQ.kLongCodigo)
        Documento.aCodConcepto = New Byte(SDK_AdminPAQ.kLongCodigo - 1) {}
        encoder.GetBytes(lAux, 0, lAux.Length, Documento.aCodConcepto, 0)

        lAux = f_RellenaConBlancos(lSerie, SDK_AdminPAQ.kLongSeries)
        Documento.aSerie = New Byte(SDK_AdminPAQ.kLongSeries - 1) {}
        encoder.GetBytes(lAux, 0, lAux.Length, Documento.aSerie, 0)

        lAux = f_RellenaConBlancos(lFecha, SDK_AdminPAQ.kLongFecha)
        Documento.aFecha = New Byte(SDK_AdminPAQ.kLongFecha - 1) {}
        encoder.GetBytes(lAux, 0, lAux.Length, Documento.aFecha, 0)

        lAux = f_RellenaConBlancos(CodigoProveedor, SDK_AdminPAQ.kLongCodigo) 'PRUEBA
        Documento.aCodigoCteProv = New Byte(SDK_AdminPAQ.kLongCodigo - 1) {}
        encoder.GetBytes(lAux, 0, lAux.Length, Documento.aCodigoCteProv, 0)

        lAux = f_RellenaConBlancos("", SDK_AdminPAQ.kLongCodigo)
        Documento.aCodigoAgente = New Byte(SDK_AdminPAQ.kLongCodigo - 1) {}
        encoder.GetBytes(lAux, 0, lAux.Length, Documento.aCodigoAgente, 0)

        lAux = f_RellenaConBlancos("", SDK_AdminPAQ.kLongReferencia)
        Documento.aReferencia = New Byte(SDK_AdminPAQ.kLongReferencia - 1) {}
        encoder.GetBytes(lAux, 0, lAux.Length, Documento.aReferencia, 0)

        Documento.aAfecta = 0

        ' Inicializa los campos Btye de la estructura de la llave del documento
        Llave.aConsecutivo = 1
        Llave.aUnidades = 0
        Llave.aPrecio = 0
        Llave.aCosto = 0

        lAux = f_RellenaConBlancos("", SDK_AdminPAQ.kLongCodigo)
        Llave.aCodProdSer = New Byte(SDK_AdminPAQ.kLongCodigo - 1) {}
        encoder.GetBytes(lAux, 0, lAux.Length, Llave.aCodProdSer, 0)

        lAux = f_RellenaConBlancos("", SDK_AdminPAQ.kLongCodigo)
        Llave.aCodAlmacen = New Byte(SDK_AdminPAQ.kLongCodigo - 1) {}
        encoder.GetBytes(lAux, 0, lAux.Length, Llave.aCodAlmacen, 0)

        lAux = f_RellenaConBlancos("", SDK_AdminPAQ.kLongReferencia)
        Llave.aReferencia = New Byte(SDK_AdminPAQ.kLongReferencia - 1) {}
        encoder.GetBytes(lAux, 0, lAux.Length, Llave.aReferencia, 0)

        lAux = f_RellenaConBlancos("", SDK_AdminPAQ.kLongCodigo)
        Llave.aCodClasificacion = New Byte(SDK_AdminPAQ.kLongCodigo - 1) {}
        encoder.GetBytes(lAux, 0, lAux.Length, Llave.aCodClasificacion, 0)

        lError = SDK_AdminPAQ.fAltaDocumentoCargoAbono(Documento)

        Dim Concepto As String = ""
        Dim SeriePago As String = ""
        Dim FolioPago As String = ""

        If lError = 0 Then
            lret = SDK_AdminPAQ.fAfectaDocto_Param(CodConcepto, SerieStr, Foliodbl, True)
            If lret <> 0 Then
                MensajeError(lret)
                lblStatus.Text = "Error al afectar el documento de abono"
            Else
                lblStatus.Text = "Documento de pago afectado correctamente..."
                For j = 0 To dgDetallado.Rows.Count - 1
                    If dgAcumulados.Rows(FilaActual).Cells(0).Value = dgDetallado.Rows(j).Cells(0).Value Then
                        If dgDetallado.Rows(j).Cells(2).EditedFormattedValue = True Then
                            lblStatus.Text = "Saldando facturas..."
                            Application.DoEvents()
                            Concepto = CStr(CInt(dgDetallado.Rows(j).Cells(9).Value.ToString.Trim))
                            SeriePago = dgDetallado.Rows(j).Cells(6).Value
                            FolioPago = dgDetallado.Rows(j).Cells(5).Value
                            lret = SDK_AdminPAQ.fSaldarDocumento_Param(Concepto, SeriePago, FolioPago, "26", lSerie2, lFolio2, Importe, 1, lFecha2)
                            If lret <> 0 Then
                                MensajeError(lret)
                                lblStatus.Text = "No se pudo asociar el movimiento"
                            End If
                        End If
                    End If
                Next
            End If
           
        Else
            MensajeError(lError)
            lblStatus.Text = "Error al crear el abono"
            f_Termina(0) ' 0.- Se cancelan los cambios documento
        End If
    End Sub

    Private Sub EnviaAbonoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


    End Sub

    Private Sub ToolStripButton5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        CreaExcel()

    End Sub

    Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Private Sub chTodos_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chTodos.CheckedChanged
        If dgDetallado.Rows.Count = 0 Then
            Exit Sub

        End If
        Dim Proveedor As Integer
        Dim i As Integer
        Dim Monto As Double
        Dim Original As Double = 0


        If chTodos.Checked = False Then
            For k = 0 To dgDetallado.Rows.Count - 1
                dgDetallado.Rows(k).Cells(2).Value = False

                Proveedor = dgDetallado.Rows(k).Cells(0).Value
                Monto = dgDetallado.Rows(k).Cells(8).Value
                Original = 0

                txtTotal.Text = Format(txtTotal.Text - Monto, "###,###.#0")
                For i = 0 To dgAcumulados.Rows.Count - 1
                    If Proveedor = dgAcumulados.Rows(i).Cells(0).Value Then
                        Original = dgAcumulados.Rows(i).Cells(2).Value
                        dgAcumulados.Rows(i).Cells(2).Value = Original - Monto
                        Exit For
                    End If
                Next
                Monto = 0
            Next
        Else
            For k = 0 To dgDetallado.Rows.Count - 1
                dgDetallado.Rows(k).Cells(2).Value = True

                Proveedor = dgDetallado.Rows(k).Cells(0).Value
                Monto = dgDetallado.Rows(k).Cells(8).Value
                Original = 0

                txtTotal.Text = Format(txtTotal.Text + Monto, "###,###.#0")
                For i = 0 To dgAcumulados.Rows.Count - 1
                    If Proveedor = dgAcumulados.Rows(i).Cells(0).Value Then
                        Original = dgAcumulados.Rows(i).Cells(2).Value
                        dgAcumulados.Rows(i).Cells(2).Value = Original + Monto
                        Exit For
                    End If
                Next
                Monto = 0
            Next
        End If
    End Sub

    Private Sub dgDetallado_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgDetallado.CellContentClick

    End Sub

    Private Sub ToolStripButton2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Enviar()

    End Sub

    Private Sub ToolStripButton9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton9.Click
        datAplicacion.Value = Now()
        datInicial.Value = Now()
        datFinal.Value = Now()
        radioTodos.Checked = True
        dgAcumulados.Rows.Clear()
        dgDetallado.Rows.Clear()

    End Sub

    Private Sub ToolStripButton8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton8.Click
        Enviar()

    End Sub

    Private Sub ToolStripButton7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton7.Click
        CreaExcel()

    End Sub

    Private Sub ToolStripButton3_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton3.Click
        Continuar = False
        ImportaTablas(2)
        Timer1.Enabled = True
        Application.DoEvents()

        Do While Continuar = False
            lblStatus.Text = "Espere mientras se actualizan las tablas..."
            Application.DoEvents()
        Loop

        Close()

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        milisegundo += 1
        segundo = 4
        If milisegundo = 9 Then
            milisegundo = 0
            segundo += 1

            If segundo = 5 Then
                Application.DoEvents()
                If BuscarIntDatoCitra("SELECT Resultado FROM EstadoImportacion WHERE IdImportacion=1") = 0 Then
                    Continuar = True
                    Timer1.Enabled = False
                    Application.DoEvents()
                Else
                    segundo = 1
                End If
            End If
        End If

    End Sub
End Class